/*
 * TimerTaskQueue.h
 *
 *  Created on: 2024年8月21日
 *      Author: chuan
 */

#ifndef TIMERTASKQUEUE_H_
#define TIMERTASKQUEUE_H_

#include "BasicType.h"
#include <functional>
#include <string>


class TimerTaskQueue
{
public:
	typedef std::string	TimerID;

	/*
	* 计时器处理
	* @param	tid	计时器ID
	* @param	interval	计时器间隔, 单位为毫秒. 可以改写
	* @return	是否继续定时, false 表示结束
	*/
	typedef std::function< bool(TimerID tid, uint32_t& interval) >		TimerHandler;

public:
	TimerTaskQueue();
	virtual ~TimerTaskQueue();

	/**
	 * create queue
	 * return true if success
	 */
	virtual bool open() = 0;

	/**
	 * destroy queue
	 */
	virtual void close() = 0;


	virtual bool isOpen() = 0;

	virtual bool addTimer(TimerID id, uint32_t ms, TimerHandler handler) = 0;

	virtual bool addElapse(TimerID id, uint32_t ms, TimerHandler handler) = 0;

	virtual bool cancel(TimerID id) = 0;

	/**
	 * cancel all timer
	 */
	virtual void clear() = 0;


};

#endif /* TIMERTASKQUEUE_H_ */
